#ifndef _DARWIN_OSDEF_H_
#define _DARWIN_OSDEF_H_

#include <dlfcn.h>
#include <stdbool.h>
#include <sys/semaphore.h>

// address
#include <netinet/in.h>
// setsockopt opations
#include <arpa/inet.h>
#include <netinet/tcp.h>
#include <semaphore.h>

// getpagesize
#include <unistd.h>

// sem
#include <TargetConditionals.h>
#include <mach/mach.h>
#include <mach/semaphore.h>
#include <mach/task.h>

// thread stack size
#include <limits.h>

// path
#include <mach-o/dyld.h>
#include <sys/syslimits.h>

// atomic
#include <libkern/OSAtomic.h>
// #include <stdatomic.h>

#include <sys/time.h>

#include <objc/objc.h>

#include <mach/mach_time.h>

#include <dlfcn.h>
#include <sys/event.h>

#define INVALID_HANDLE_VALUE 0
#include <pthread.h>

#define CALLBACK PASCAL
#define WINAPI
#define WINAPIV
#define APIENTRY WINAPI
#define APIPRIVATE
#ifdef _68K_
#define PASCAL __pascal
#else
#define PASCAL
#endif
#elif _MSC_VER

#ifndef WINAPI
#define WINAPI __stdcall
#endif

#ifndef CALLBACK
#define CALLBACK __stdcall
#endif

#ifndef WINAPIV
#define WINAPIV __cdecl
#endif

#ifndef APIENTRY
#define APIENTRY WINAPI
#endif

#ifndef APIPRIVATE
#define APIPRIVATE __stdcall
#endif

#ifndef PASCAL
#define PASCAL __stdcall
#endif

#endif
